package com.wlc.base.structure;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description 循环结构
 * @date 2021-06-21 16:30
 */
public class LoopDemo {
    /**
     * 计算： 1+2+3+...+99+100=?
     */
    public void method1() {
        int i = 0;
        int sum = 0;
        while (i <= 100) {
            sum = sum + i;
            i++;
        }
        System.out.println(sum);
    }

    /**
     * 使用 do..while 循环方式计算 1+2+..+99+100 = ？
     */
    public void method2() {
        int i = 0;
        int sum = 0;
        do {
            sum = sum + i;
            i++;
        } while (i <= 100);
        System.out.println(sum);
    }

    /**
     * while 和 do..while 的区别
     * while循环语句会先判断，再执行循环语句；
     * do..while 先执行，再判断
     */
    public void method3() {
        int a = 0;
        while (a < 0) {
            System.out.println(a);
            a++;
        }
        System.out.println("===========" + a);
        do {
            System.out.println(a);
            a++;
        } while (a < 0);
        System.out.println("a的值为：" + a);
    }

    /**
     * for 循环结构
     */
    public void method4() {
        // 初始化条件
        int a = 1;
        //条件判断
        while (a <= 100) {
            System.out.println(a);
            a += 2;
        }
        System.out.println("while循环结束");
        /**
         * for循环注意点
         * 最先执行初始化的步骤；可以声明一个类型，也可以初始化一个或者多个变量，也可以是空的（）；
         * 然后检查布尔表达式的值，如果表达式的值为true,则执行循环体；如果表达式为false,循环终止；
         * 开始执行循环体外的代码；
         * 执行一次循环以后，更新循环控制变量（迭代因子控制循环变量的增减），
         * 再次检测布尔表达式，循环上面的步骤；
         */
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
        }
        System.out.println("for循环结束");
    }

    /**
     * 计算0-100 之间的奇数和偶数的和
     */
    public void method5() {
        // 偶数
        int oddSum = 0;
        // 奇数
        int evenSum = 0;
        for (int i = 0; i <= 10; i++) {
            if (i % 2 != 0) {
                // 奇数
                evenSum += i;
            } else {
                // 偶数
                oddSum += i;
            }
        }
        System.out.println("奇数的和为：" + evenSum);
        System.out.println("偶数的和为：" + oddSum);

    }

    /**
     * 用while 或者 for循环输出1-1000之间可以被5整除的数，并且每行输出3个
     */
    public void method6() {
        for (int i = 0; i < 1000; i++) {
            // i%5 ==0 表示i 是5的整数
            if (i % 5 == 0) {
                System.out.print(i + "\t");
            }
            // 每行输出3个，并且是5的倍数，所以每一行应该是 15的倍数
            if (i % (3 * 5) == 0) {
                System.out.println();
            }
        }
    }

    /**
     * 列出99乘法表
     * 1*1 = 1
     * 1*2 = 2  2*2 = 4
     * 1*3 = 2  2*3 = 6    3 * 3 = 9
     * 1*4 = 2  2*4 = 8    3 * 4 = 12  4 * 4 = 16
     * 1*5 = 2  2*5 = 10   3 * 5 = 15  4 * 5 = 20   5 * 5 = 25
     * 1*6 = 2  2*6 = 12   3 * 6 = 18  4 * 6 = 24   5 * 6 = 30  6 * 6 = 36
     * 1*7 = 2  2*7 = 14   3 * 7 = 21  4 * 7 = 28   5 * 7 = 35  6 * 7 =  42  7 * 7 = 49
     * 1*8 = 2  2*8 = 16   3 * 8 = 24  4 * 8 = 32   5 * 8 = 40  6 * 8 =  48  7 * 8 = 56 8 * 8 = 64
     * 1*9 = 2  2*9 = 18   3 * 9 = 27  4 * 9 = 36   5 * 9 = 45  6 * 9 =  54  7 * 9 = 63 8 * 9 = 72  9 * 9 = 81
     */
    public void method7() {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {
                System.out.print(i + "*" + j + "=" + j * i + "\t");
            }
            System.out.println();
        }

    }

    /**
     * 增强for循环
     * for(类型  变量： 循环体){
     * <p>
     * }
     */
    public void method8() {
        // 定一个int类型的数组
        int[] number = {12, 34, 4, 5, 6, 77, 33};
        for (int i = 0; i < number.length; i++) {
            System.out.println(number[i]);
        }
        System.out.println("===========");
        for (int a : number) {
            System.out.println(a);
        }
    }

    /**
     * break 终止循环
     */
    public void method9() {
        int i = 0;
        while (i < 100) {
            i++;
            System.out.println(i);
            if (i == 30) {
                break;
            }

        }
        System.out.println("hello123");
    }

    /**
     * continue 跳出当前的循环，执行下一次的循环判定
     */
    public void method10() {
        int i = 0;
        while (i < 100) {
            i++;
            if (i % 10 == 0) {
                System.out.println();
                //走到这里的时候，下面的 打印 在本次执行的过程中，就不会再次执行了
                continue;
            }
            System.out.print("  " + i);
        }
    }

    /**
     * 打印5层的三角形
     * *
     * **&
     * ***&&
     * ****&&&
     * *****&&&&
     */
    public void method11() {
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            for (int j = 1; j < i; j++) {
                System.out.print("&");
            }
            System.out.println();
        }

    }

    /**
     * a和b 就是形式参数
     *
     * @param a
     * @param b
     * @return
     */
    public int method12(int a, int b) {
        return a + b;
    }

    /**
     * 比较大小
     * @param num1
     * @param num2
     * @return
     */
    public int method13(int num1, int num2) {
        int result = 0;
        if(num1 == num2){
            System.out.println("num1 等于num2");
            return 0;
        }
        return num1 > num2 ? num1 : num2;
    }
    public double method13(double num1, double num2) {
        int result = 0;
        if(num1 == num2){
            System.out.println("num1 等于num2");
            return result;
        }
        return num1 > num2 ? num1 : num2;
    }

    public static void main(String[] args) {
        LoopDemo loopDemo = new LoopDemo();
        // 实际参数
        System.out.println(loopDemo.method13(3.0, 3.2));
        for (int i = 0; i < args.length; i++) {
            System.out.println("\"args: \" = " + args[i]);
        }
    }
}
